# -*- coding: utf-8 -*-
"""
Created on Wed Jul  2 10:42:26 2025

@author: 503
"""

import numpy as np

# 1. NumPy数组基础操作
print("=== 1. NumPy数组基础操作 ===")
# （1）创建3×4数组
arr = np.arange(1, 13).reshape(3, 4)
print("原始数组：\n", arr)

# （2）第2行替换为0
arr[1, :] = 0
print("\n第2行替换为0：\n", arr)

# （3）提取大于5的元素
greater_than_5 = arr[arr > 5]
print("\n大于5的元素：", greater_than_5)

# （4）按列拼接全1的3×1数组
ones_col = np.ones((3, 1), dtype=int)
arr_concat = np.concatenate([arr, ones_col], axis=1)
print("\n拼接后的数组：\n", arr_concat)

# 2. 数据归一化与标准化
print("\n=== 2. 数据归一化与标准化 ===")
# （1）生成随机数组
np.random.seed(42)
data = np.random.randint(10, 101, 10)
print("原始数据：", data)

# （2）Min-Max归一化
data_minmax = (data - data.min()) / (data.max() - data.min())
print("Min-Max归一化：", data_minmax)

# （3）Z-score标准化
data_zscore = (data - data.mean()) / data.std()
print("Z-score标准化：", data_zscore)

# 3. 缺失值处理
print("\n=== 3. 缺失值处理 ===")
# （1）创建包含缺失值的数组
arr_nan = np.array([1, 2, np.nan, 4, 5, np.nan, 7])
print("原始数组：", arr_nan)

# （2）统计缺失值个数
nan_count = np.isnan(arr_nan).sum()
print("缺失值个数：", nan_count)

# （3）用均值填充缺失值
mean_val = np.nanmean(arr_nan)
arr_filled = np.where(np.isnan(arr_nan), mean_val, arr_nan)
print("填充后的数组：", arr_filled)